/***********************************************************************************
 * 文件名： smcp_link.c
 * 作者： 刘言
 * 版本： 4.1
 * 说明：
 * 		Smart Mist Communication Protocol (SMCP) 4.1 通信协议的链路层。
 *      接受来自物理层（端口驱动）的位流形式的数据，并封装成帧，传送到上一层；同样，也将来自
 *  上一层的数据帧，拆装为位流形式的数据转发到物理层。
 * 修改记录：
 *  2024/3/12: 支持4.1。刘言。
***********************************************************************************/
#ifndef _SMCP_LINK_H_
#define _SMCP_LINK_H_

#include "smcp_common.h"  


// APIs

// 初始化
// 内部包括了硬件端口驱动的初始化（端口号依据配置文件）
void SmcpLink_Init();

// 获取接收到的数据（实际上仅获取了缓存地址）
const u8 *SmcpLink_GetReceiveData();

// 获取接收到的数据包长度（数据包的长度数据）
u16 SmcpLink_GetLength();

// 获取当前或者最后一次接收到数据的端口号
u8 SmcpLink_GetPortNum();

// 清空接收缓存（仅在缓存满了时需要清空，便于继续接收余下的数据，接收一包完整数据后缓存会被自动处理）
void SmcpLink_ClearBuff();

// 按协议发送一包(帧)数据，需要提供数据区所有数据
void SmcpLink_SendPkg(u16 lenght, u8 *dat);

void SmcpLink_SendByte(u8 b);

// 由外部调用（一般是UART中断）来通知 Smcp 收到了新的数据（1个字节）。
// 外部调用事件：收到了新的数据（1个字节）
void SmcpLink_EvReceivedData(u8 dat);



#endif


